ASP.NET Core অ্যাপ্লিকেশন কনফিগারেশন ব্যবস্থাপনা খুবই শক্তিশালী এবং ফ্লেক্সিবল। এটি বিভিন্ন উৎস থেকে কনফিগারেশন লোড করতে সক্ষম, যেমন appsettings.json, environment variables, এবং command-line arguments। এই কনফিগারেশনগুলির মাধ্যমে আপনি অ্যাপ্লিকেশনের সেটিংস পরিচালনা এবং পরিবর্তন করতে পারেন।
appsettings.json হলো ASP.NET Core অ্যাপ্লিকেশনের একটি সাধারণ কনফিগারেশন ফাইল, যা JSON ফরম্যাটে কনফিগারেশন সংরক্ষণ করে। এটি অ্যাপ্লিকেশনের বিভিন্ন সেটিংস, যেমন ডেটাবেস কানেকশন স্ট্রিং, লগিং কনফিগারেশন, এবং অন্যান্য কাস্টম সেটিংস সংরক্ষণ করতে ব্যবহৃত হয়।
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyDb;Trusted_Connection=True;"
},
"MyCustomSetting": "Some Value"
}
এখানে:
ASP.NET Core অ্যাপ্লিকেশনে appsettings.json ফাইলের কনফিগারেশন অ্যাক্সেস করার জন্য IConfiguration ইন্টারফেস ব্যবহার করা হয়। এটি Startup.cs বা Program.cs ফাইলে ইঞ্জেক্ট করা যেতে পারে।
public class MyService
{
private readonly IConfiguration _configuration;
public MyService(IConfiguration configuration)
{
_configuration = configuration;
}
public void DisplayConnectionString()
{
string connectionString = _configuration.GetConnectionString("DefaultConnection");
Console.WriteLine(connectionString);
}
}
এখানে, GetConnectionString
মেথড ব্যবহার করে ConnectionStrings সেকশনের থেকে ডেটাবেস কানেকশন স্ট্রিং অ্যাক্সেস করা হচ্ছে।
ASP.NET Core একাধিক কনফিগারেশন ফাইল সমর্থন করে। আপনি চাইলে appsettings.Development.json, appsettings.Production.json ইত্যাদি ফাইল ব্যবহার করতে পারেন, যেখানে পরিবেশভিত্তিক কনফিগারেশন সংরক্ষিত থাকে। এই ফাইলগুলো স্বয়ংক্রিয়ভাবে অ্যাপ্লিকেশনের পরিবেশ অনুসারে লোড হয়ে যায়।
{
"Logging": {
"LogLevel": {
"Default": "Debug"
}
}
}
এটি Development পরিবেশে চালানোর সময় স্বয়ংক্রিয়ভাবে ব্যবহার হবে।
Environment variables ASP.NET Core অ্যাপ্লিকেশনে কনফিগারেশন সেটিংস পরিবেশের উপর ভিত্তি করে প্রদান করতে ব্যবহৃত হয়। এগুলো সাধারণত OS level কনফিগারেশন এবং কনটেইনার ভিত্তিক অ্যাপ্লিকেশন পরিচালনায় ব্যবহার করা হয়।
আপনি পরিবেশ ভেরিয়েবল ব্যবহার করে কনফিগারেশন সেট করতে পারেন, যেমন:
Windows-এ environment variable সেট করতে:
setx MyAppSetting "MyValue"
Linux/macOS-এ environment variable সেট করতে:
export MyAppSetting="MyValue"
ASP.NET Core অ্যাপ্লিকেশন IConfiguration এর মাধ্যমে environment variables অ্যাক্সেস করতে পারে। উদাহরণস্বরূপ:
{
"MyAppSetting": "DefaultValue"
}
এবং তারপর Startup.cs অথবা Program.cs ফাইলে:
public class MyService
{
private readonly IConfiguration _configuration;
public MyService(IConfiguration configuration)
{
_configuration = configuration;
}
public void DisplaySetting()
{
string settingValue = _configuration["MyAppSetting"];
Console.WriteLine(settingValue);
}
}
এখানে, MyAppSetting যদি environment variable বা appsettings.json
এ ডিফাইন করা থাকে, তাহলে সেটা কনফিগারেশন হিসেবে ব্যবহার করা হবে।
ASP.NET Core অ্যাপ্লিকেশন স্বয়ংক্রিয়ভাবে environment variables এবং appsettings.json ফাইলের কনফিগারেশন ম্যানেজ করে। উদাহরণস্বরূপ, আপনি চাইলে পরিবেশের ভিত্তিতে আলাদা কনফিগারেশন লোড করতে পারেন:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, config) =>
{
var env = context.HostingEnvironment;
config.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
config.AddEnvironmentVariables();
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
এখানে EnvironmentName পরিবর্তন হলে, সংশ্লিষ্ট appsettings.Production.json বা appsettings.Development.json ফাইলটি স্বয়ংক্রিয়ভাবে লোড হবে।
ASP.NET Core বিভিন্ন কনফিগারেশন সোর্স সমর্থন করে, যেমন:
এগুলোর মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনের কনফিগারেশন খুব সহজে পরিচালনা করতে পারেন এবং প্রয়োজনে একাধিক সোর্সের কনফিগারেশন মিশ্রণ করতে পারেন।
ASP.NET Core অ্যাপ্লিকেশনের কনফিগারেশন ব্যবস্থাপনা খুবই লচলিত এবং এটি আপনাকে আপনার অ্যাপ্লিকেশনকে নির্দিষ্ট পরিবেশে বা প্রোডাকশন/ডেভেলপমেন্ট পরিবেশের জন্য সহজে কনফিগার করতে সহায়তা করে।
common.read_more